0 REM********* CA - GRAF ************* 1 POKE157,.:POKE53269,.:IFU=.THENGOSUB500:U=.2:LOAD"CA - ROUT 1",8,1 2 IFU<.5THENU=.5:LOAD"CA MENU CTRL",8,1 3 IFU<1THENU=1:LOAD"CA - ROUT 2",8,1 4 IFU=2THENCLOSE1:PRINTR$:GOTO10000 5 IFU=3THENCLOSE1:AN=.:AL=.:U=2:SYS65484:GOTO10000 6 IFU=4THENSYSHD:U=2:GOTO10000 7 IFU=5THENCLOSE1:U=2:SYS65484:GOTO10000 9 IFU=7THENSYSD2:U=2:SYSNM 10 POKE55,.:POKE56,76:CLR:SYS39825:.K,160,100:MP=869:ML=1023:AB=12:POKE650,128 20 OPEN15,8,15:HF=15:ZF=.:RF=4:BA=400:MX=160:MY=100:T=128:DQ=-.001 30 QX=MX:QY=MY:R$=CHR$(13):L$=CHR$(.) 40 MV=49244:D2=49374:O=49552:EL=49553:H2=49554:HI=49557:HS=49560:BE=50236 50 SP=50290:HD=50348:NM=50378:HK=50446:HX=50486:LI=50500:SR=51562:SA=51615 55 HP=51646:HL=51731:DR=51939:BB=52193:SW=52357:SZ=52407:RX=52583:CS=53035 60 FV=1006:BS=53068:PS=37632:FG=37659:PG=37682:AG=37688:FE=37720 90 POKE792,202:POKE793,196:POKE65530,231:POKE65531,196:POKE785,88:POKE786,202 100 DD=37759:HC=39316 110 BO=53280:UE$="[156][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]":DO$="" 120 B$=" ":SP$=B$+B$+B$+B$:JY=56320:MO$="MOMENT":BW$="BITTE WARTEN" 190 U=2:GOTO10000 199 REMX/Y ODER Z 200 PRINTSPC(.);:.N,3:B=(PEEK(243)+256*PEEK(244)-55296)/40:C=PEEK(9)-4 210 PRINT" X / Y / Z":FORI=1TO3:.P,I,C+I*4,B,C+I*4+2,B,1:NEXT:.S,14:RETURN 299 REMINPUT 300 N$=CHR$(34):A$="":B$=CHR$(34):PRINT""; 310 PRINTLEFT$("[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]",LEN(N$))N$B$;:WAIT198,255 315 IFLEN(N$)>29THENPOKE198,.:WAIT198,1:IFPEEK(631)<>20ANDPEEK(631)<>13THEN315 320 GETA$:Q=ASC(A$):IFQ<>13ANDQ<>20ANDQ<>34THENN$=N$+A$:GOTO310 330 IFQ=20ANDLEN(N$)>1THENN$=LEFT$(N$,LEN(N$)-1):PRINT"[157] [157][157]";:GOTO310 340 IFQ=20ORQ=34OR(Q=13ANDLEN(N$)=1)THENPRINT"[157]";:GOTO310 350 N$=RIGHT$(N$,LEN(N$)-1):RETURN 399 REMINPUT ZAHL 400 PRINT" "SPC(.)"[157]";:B=PEEK(243)+256*PEEK(244)+PEEK(9) 405 PRINTLEFT$(" ",-(A<.))INT(A)"[157] [157][157][157][157][157][157][157][157][157][157][157][157][157]"; 410 PRINTSPC(8-LEN(STR$(INT(A)))+(A<.));:WAITJY,16:POKE198,.:L=.:D$="" 420 GETA$:IFA$=CHR$(20)ANDLTHENL=L-1:D$=LEFT$(D$,L):PRINT"[157] [157]";:GOTO420 425 IFA$="[133]"THENPRINTLEFT$("[157][157][157][157][157][157][157][157][157]",L+1);:GOTO400 430 ON-(A$=R$OR(PEEK(56320)AND16)=.)GOTO450:ON-(A$>"9"ORA$>"."ANDA$<"0")GOTO420 440 ON-(A$<"-"ORL>7)GOTO420:PRINT"[149]"A$;:L=L+1:D$=D$+A$:IFL>1GOTO420 445 PRINT" [157][157][157][157][157][157][157]";:GOTO420 450 PRINTLEFT$(L$+"",L+1)"[144]"R$;:FORI=BTOB+7:POKEI,.:NEXT 455 B=VAL(D$):B=B+(B-A)*(L=.):RETURN 499 REMFLOPPY AN? 500 OPEN1,8,1:CLOSE1:IFST=.THENRETURN 510 A=1:GOSUB900:PRINT"[194]ITTE [198]LOPPY EINSCHALTEN, [198]EUER";:GOSUB700:GOTO500 549 REMHIOFF 550 POKE56576,3:POKE53272,23:POKE53265,27:RETURN 599 REMJA/NEIN 600 PRINT" "SPC(.)"[157]";:B=(PEEK(243)+256*PEEK(244)-55296)/40:C=PEEK(9) 605 B=B-(C>39):C=C+40*(C>39) 610 .N,2:.P,1,C-1,B,C+2,B,1:.P,2,C+4,B,C+9,B,1:PRINT" JA / NEIN":.S,14:RETURN 699 REMFEUER 700 WAITJY,16:WAITJY,16,16:POKE198,.:RETURN 799 REMFEHLERKANAL 800 A=1:GOSUB900:CLOSE1:FORI=.TO1:PRINTA$;:GET#15,A$:I=-(A$=R$):NEXT:GOTO10300 899 REMUNTERE LEISTEN 900 PRINTLEFT$(DO$,22+A*2)"[221]"LEFT$(SP$,38)"[145]";:RETURN 999 **** ZEICHNEN ********************** 1000 ON-(AN=.)GOTO10400:PRINT"[147]"SPC(14)"[218]EICHNEN"SPC(30)LEFT$(UE$,13):POKEEL,1 1010 POKEO,224:PRINT"[144] [206]ORMAL / [211]CHRAEGBILD / [211]UPER 3D ?":.N,3:.P,1,1,3,8,3,1 1020 .P,2,10,3,22,3,1:.P,3,24,3,33,3,1:.S,14:D=ST:AE=2:IFD=2GOTO1080 1021 PRINT" [200]IDDEN LINE ?";:GOSUB600:IFST=2GOTO1025 1022 AE=1:PRINT" [197]CKPUNKTE :";:A=AN:GOSUB400:SYSSA,B,AL:SYSBB,-MX,-MY,. 1023 SYSRX,COS(DQ),.,-SIN(DQ),.,1,.,SIN(DQ),.,COS(DQ):SYSBB,MX,MY,. 1024 PRINTSPC(20)"[145]("INT(AL*B*(B-1)/40)"S)" 1025 D$=" [194]ILDSCHIRMABSTAND :":PRINTD$BA:E$=" [193]UGE X :":PRINTE$QX,"Y :"QY 1026 PRINT" [193]ENDERN ?";:GOSUB600:ONST-1GOTO1040:PRINTD$;:A=BA:GOSUB400:BA=B 1030 PRINTE$;:A=QX:GOSUB400:QX=B:PRINT" [193]UGE Y :";:A=QY:GOSUB400:QY=B 1040 SYSHK,BA,QX+(null)^-5,QY+(null)^-5:ON-(D=3)GOTO2000:SYSHI,HF,ZF:POKEBO,HF+8 1050 SYSDR+(DR-DD)*(AE=1) 1070 POKEBO,RF:GOSUB700:SYSNM 1080 SYSHI,HF,ZF:POKEBO,HF+8:SYSHK,BA,QX,QY:POKEEL,0:SYSDR:GOTO1070 2000 PRINT" [193]UGENABSTAND :";:A=AB:GOSUB400:AB=B:PRINT" [212]EMPO :";:A=T 2010 GOSUB400:T=BAND255:POKESP,T:SYSH2,HF,ZF:POKEBO,H+8:D=DR+(DR-DD)*(AE=1) 2020 SYSHX,QX+AB/2+(null)^-5:SYSD:POKEBO,HF+6:SYSHX,QX-AB/2:POKEO,160:SYSD 2030 POKEBO,RF:U=4:SYSBE:U=2:GOTO10000 2999 **** LETZTES BILD ***************** 3000 PRINT"[147]"SPC(14)"[204]ETZTES [194]ILD"SPC(26)LEFT$(UE$,17)R$"[144] [206]EUE [198]ARBEN ?"; 3010 A=HF:GOSUB600:ONST-1GOTO3040 3020 PRINT" [200]INTERGRUND :";:GOSUB400:PRINT" [218]EICHNEN :";:HF=BAND15:A=ZF 3030 GOSUB400:ZF=BAND15:PRINT" [210]AHMEN :";:A=RF:GOSUB400:RF=BAND15 3040 PRINT" [211]UPER 3D ?";:GOSUB600:POKEO,224:ONST-1GOTO3080:A=T 3050 PRINT" [194]ILDWECHSELTEMPO :";::GOSUB400:T=BAND255:POKESP,T 3060 SYSHS,HF,ZF:POKEBO,RF:U=4:SYSBE:U=2:GOTO10000 3080 SYSHS,HF,ZF:GOTO1070 3999 **** RISSE ************************ 4000 ON-(AN=.)GOTO10400:A=.:GOSUB900:PRINTMO$:Z=USR(1)Z 4030 POKEO,224:FORI=2TOAN:L=USR(I)Z:Z=Z+(Z-L)*(Z>L):NEXT:POKEEL,.:Z=Z/2-2 4060 SYSHI,HF,ZF:SYSLI,MX,.,MX,200:SYSLI,.,MY,320,MY:SYSRX,.5,.,.,.,.5,.,.,.,.5 4090 SYSSR,.,.,MX,MY:SYSDR:SYSSR,MX,.,319,MY:SYSRX,.,.,1,.,1,.,1,.,. 4100 SYSBB,MX-Z,.,.:SYSDR:SYSRX,.,.,1,-1,.,.,.,1,.:SYSSR,.,MY,MX,199 4110 SYSBB,.,360,.:SYSDR:SYSBB,.,-200-Z,.:SYSRX,2,.,.,.,.,2,.,-2,. 4120 POKEBO,RF:GOSUB700:GOSUB550:GOTO10400 4999 **** BILDER TAUSCHEN ************** 5000 SYSSW,HF,ZF:GOTO4120 5999 **** HARDCOPY ********************* 6000 A=.:GOSUB900:PRINT"[194]EIDE [211]CREENS ?";:GOSUB600:A=ST:OPEN1,4,4:U=5 6010 POKEEL,2-A:IFA=2THENPRINT#1,""CHR$(108)CHR$(20); 6020 CMD1,"3";:SYSHC:PRINT#1,"@";:CLOSE1:GOTO10300 9999 **** MENUE ************************ 10000 POKEBO,8:POKEBO+1,15:PRINTCHR$(8)CHR$(14):.R,.,8,308,188 10010 PRINT"[144][147][149]"LEFT$(SP$,16)"CA - GRAF"LEFT$(SP$,15)"[146][144]"; 10050 D$="[192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]":D$=D$+D$ 10060 PRINT"[176]"LEFT$(D$,12)"[178][192][192][192][192][192][192][192][192][178]"LEFT$(D$,16)"[174][221][210]ISSZEICHNG.[221]"SPC(8)"[221] "; 10070 PRINT"[196]ATENEINGABE [221][171]"LEFT$(D$,12)"[179][218]EICHNEN[221] [196]ATENAENDERUNG [221][221]LETZTES"; 10080 PRINT" [194]ILD[221]"SPC(8)"[171]"LEFT$(D$,16)"[179][221][194]ILDERTAUSCH[221]"SPC(8)"[221] [207]VA"; 10090 PRINT"L / [214]IELECK [221][171][192][192][192][192][192][192][192][192][192][192][178][192][177][192][192][192][192][192][192][192][192][177][178]"LEFT$(D$,15)"[179][221]"SPC(10)"[221]"; 10110 PRINTSPC(11)"[221] [214]ERZERREN [221][221] [196]REHEN [221][214]ERSCHIEBEN[171]"LEFT$(D$,15)"[179][221]"; 10150 PRINTSPC(10)"[221]"SPC(11)"[221][218]ENTR. [211]TRECKEN[221][171][192][192][192][192][192][192][192][192][192][192][219]"LEFT$(D$,11)"[219]"; 10170 PRINTLEFT$(D$,15)"[179][221] [218]IRKEL [221] [203]OPIEREN [221][200]IRES SPEICHERN[221][171][192][192][192][192][192][192][192][192][192][192][177]"; 10180 PRINT"[192][178][192][192][192][192][192][192][192][192][192][177][192][192][178][192][192][192][192][192][192][192][192][192][192][192][192][179][221][198].[211]TART/[197]NDE[221] [204]ADEN [221] [200]ARDCOPY"; 10200 PRINT" [221][221] [194]ILD [171]"LEFT$(D$,12)"[219]"LEFT$(D$,12)"[179][221] [198]ILMSZENE [221]"; 10230 PRINT" [205]ERGE [221] [211]PEICHERN [221][171]"LEFT$(D$,12)"[219]"LEFT$(D$,12)"[219]"; 10240 PRINTLEFT$(D$,12)"[179][221] [198]ILM [221] [198]ILM LADEN [221] [196]IRECTORY [221][221]"SPC(12); 10250 PRINT"[221] [198]ILM MERGE [171]"LEFT$(D$,12)"[179][221] [218]EIGEN [221][198]. SPEICHERN[221]"; 10255 PRINT"[198]LOPPYBEFEHL[221][171]"LEFT$(D$,12)"[177]"LEFT$(D$,12)"[177]"LEFT$(D$,12)"[179][221]"; 10260 PRINTSPC(37)"[221][157][148] [171]"D$"[179][221]"SPC(37)"[221][157][148] [173]"D$"[157][189][157][148][192]"; 10300 .N,27:.P,1,1,4,12,4,2:.P,2,14,2,21,5,2:.P,3,23,2,38,2,2:.P,4,1,5,12,5,2 10302 .P,5,23,3,38,3,2:.P,6,1,2,12,2,2:.P,7,23,5,38,5,2:.P,8,1,7,10,9,2 10304 .P,9,12,7,22,9,2:.P,10,24,7,38,7,2:.P,11,24,9,38,9,2:.P,12,1,11,10,11,2 10306 .P,13,12,11,22,11,2:.P,14,24,11,38,11,2:.P,15,1,13,12,13,2 10308 .P,16,14,13,25,13,2:.P,17,27,13,38,13,2:.P,18,1,14,12,14,2 10310 .P,19,1,15,12,15,2:.P,20,14,15,25,15,2:.P,21,27,15,38,15,2 10312 .P,22,1,17,12,19,2:.P,23,14,17,25,17,2:.P,24,27,17,38,17,2 10314 .P,25,14,18,25,18,2:.P,26,14,19,25,19,2:.P,27,27,19,38,19,2 10400 POKEBO,8:U=2:POKE198,.:GETA$:SYSSR,.,.,319,199 10402 .S,15:IFANTHENSYSHP,.,.,.,.:SYSSA,AN,AL 10410 ONSTGOTO3000,1000,20000,5000,25000,4000,45000,30000,40000,41000,42000 10420 ONST-11GOTO46000,35000,56000,47000,51000,6000,47500,44000,52000,50000 10430 ONST-21GOTO48500,49000,54000,49500,48000,55000 19999 **** KOORDINATENEINGABE ********** 20000 PRINT"[147]"SPC(10)"[196]ATEN EINGEBEN"SPC(24)LEFT$(UE$,19) 20010 PRINT"[144] [206]EUE [196]ATEN EINGEBEN ?";:GOSUB600:IFST=1THENAN=.:AL=. 20040 PRINT" [194]ITTE GEBEN [211]IE DIE [203]OORDINATEN EIN!":A=. 20050 B$="-[203]OORDINATE [208]UNKT [145]":PRINT" X"B$AN+1":";:GOSUB400:X=B 20060 PRINT" Y"B$AN+1":";:GOSUB400:Y=B:PRINT" Z"B$AN+1":";:GOSUB400:AN=AN+1 20070 SYSHP,AN,X,Y,B:ON-(AN=MP)GOTO20130:PRINT" [206]OCH EINEN [208]UNKT ?[145]"; 20110 GOSUB600:ONSTGOTO20050 20130 PRINT" [202]ETZT BITTE DIE [208]UNKTE EINGEBEN, DIE MITEINANDER VERBUNDEN "; 20140 PRINT"WERDEN SOLLEN!":A=1 20160 AL=AL+1:PRINT" [208]UNKT 1 ; [204]INIE [145]"AL":";:GOSUB400:C=B+1:A=C+(C-1)*(C>AN) 20170 C=B:IFB<1ORB>ANTHENPRINT" [197]XSISTIERT NICHT":AL=AL-1:GOTO20160 20180 PRINT" [208]UNKT 2 ; [204]INIE [145]"AL":";:GOSUB400:ON-(B<1ORB>AN)GOTO20170 20200 SYSHL,AL,C,B:ON-(AL=ML)GOTO10000 20230 PRINT" [206]OCH EINE [204]INIE ?[145]";:A=B:GOSUB600:ONSTGOTO20160,10000 24999 **** DATEN VERAENDERN ************ 25000 PRINT"[147]"SPC(13)"[196]ATEN AENDERN"SPC(25)LEFT$(UE$,18):PRINT"[144] [208]UNKT :"1 25010 PRINT" X:"LEFT$(STR$(INT(USR(1)X)),8)TAB(14)"Y:";:C$=" [157][157][157][157][157][157][157][157]" 25020 PRINTLEFT$(STR$(INT(USR(1)Y)),8)TAB(26)"Z:"LEFT$(STR$(INT(USR(1)Z)),8) 25025 PRINT" [204]INIE : 1"R$" [208]UNKT1 :"USR(1)0TAB(20)"[208]UNKT2 :"USR(1)1 25030 PRINT" [193]NZAHL [208]UNKTE :"AN;R$" [193]NZAHL [204]INIEN :"AL:P=1:K=1 25040 GETA$:ON-(AN=.)GOTO25060:IF(PEEK(JY)AND1)=.THENP=P+1+P*(P=AN):GOTO25100 25050 IF(PEEK(JY)AND2)=.THENP=P-1-AN*(P=1):GOTO25100 25060 ON-(AL=.)GOTO25080:IF(PEEK(JY)AND8)=.THENK=K+1+K*(K=AL):GOTO25200 25070 IF(PEEK(JY)AND4)=.THENK=K-1-AL*(K=1):GOTO25200 25080 ON-(A$="P")-2*(A$="L")-3*(A$="A")GOTO25300,25400,25500 25090 ON(PEEK(JY)AND16)/16+1GOTO10000,25040 25100 PRINTLEFT$(DO$,7)TAB(9)P"[157] ":PRINTLEFT$(DO$,9)TAB(4)C$INT(USR(P)X); 25110 PRINTTAB(16)C$INT(USR(P)Y)TAB(28)C$INT(USR(P)Z):GOTO25040 25200 PRINTLEFT$(DO$,12)TAB(9)K"[157] ":PRINTLEFT$(DO$,14)TAB(10)C$USR(K)0TAB(28); 25210 PRINTC$USR(K)1:GOTO25040 25300 PRINTLEFT$(DO$,9)TAB(4);:A=USR(P)X:GOSUB400:X=B:PRINT"[145]"TAB(16); 25310 A=USR(P)Y:GOSUB400:Y=B:PRINT"[145]"TAB(28);:A=USR(P)Z:GOSUB400 25320 SYSHP,P,X,Y,B:GOTO25040 25400 PRINTLEFT$(DO$,14)TAB(10);:A=USR(K)0:GOSUB400:X=B:PRINT"[145]"TAB(28); 25410 A=USR(K)1:GOSUB400:SYSHL,K,X,B:GOTO25040 25500 PRINTLEFT$(DO$,17)TAB(17);:A=AN:GOSUB400:ON-(B>MP)GOTO25500:AN=B:A=AL 25600 PRINTLEFT$(DO$,20)TAB(17);:GOSUB400:ON-(B>ML)GOTO25600:AL=B:GOTO25040 29999 **** DREHEN ********************** 30000 ON-(AN=.)GOTO10400:PRINT"[147]"SPC(14)"[196]REHEN"SPC(32)LEFT$(UE$,11) 30030 PRINT"[144] [218]U WELCHER [193]CHSE SOLL DIE [196]REHACHSE PARALLEL SEIN ?"; 30050 A=MY:D=.:Z$="Z":Y$="Y":GOSUB200:IFST=3THENZ$="Y":Y$="X":A=MX:D=MY 30060 B$="-[203]OORDINATE DER [193]CHSE :":IFST=2THENY$="X":Z$="Z":D=.:A=MX 30080 PRINT" "Y$B$;:GOSUB400:Z=B:PRINT" "Z$B$;:A=D:GOSUB400:Y=B:A=. 30100 PRINT" [196]REHWINKEL :";:GOSUB400:W=B/180*(null):A=SIN(W):B=COS(W) 30110 PRINTSPC(148)MO$:ONST-1GOTO30140,30130 30120 SYSBB,.,-Z,-Y:SYSRX,1,.,.,.,B,A,.,-A,B:SYSBB,.,Z,Y:GOTO10000 30130 SYSBB,-Z,-Y,.:SYSRX,B,A,.,-A,B,.,.,.,1:SYSBB,Z,Y,.:GOTO10000 30140 SYSBB,-Z,.,-Y:SYSRX,B,.,-A,.,1,.,A,.,B:SYSBB,Z,.,Y:GOTO10000 34999 **** KOPIEREN ******************** 35000 IFAN=.ORAN*2>MPORAL*2>MLGOTO10400 35010 PRINT"[147]"SPC(10)"[203]OPIEREN"SPC(30)LEFT$(UE$,13)R$:A=. 35030 B$="[144] [214]ERSCHIEBEN - ":PRINTB$"X :";:GOSUB400:X=B:PRINTB$"Y :";:GOSUB400 35040 Y=B:PRINTB$"Z :";:GOSUB400:Z=B:A=1:B$=" [218]ERREN - ":PRINTR$B$"X :"; 35050 GOSUB400:VX=B:X=X*B+MX-MX*B:PRINTB$"Y :";:GOSUB400:VY=B:Y=Y*B+MY-MY*B 35060 PRINTB$"Z :";:GOSUB400:VZ=B:Z=Z*B:POKE144,2 35080 ON-(2*AL+AN>ML)GOTO35102:PRINT" [203]OPIEN VERBINDEN ?";:GOSUB600 35102 PRINTSPC(63)BW$:SYSRX,VX,.,.,.,VY,.,.,.,VZ:SYSBB,X,Y,Z 35110 FORI=1TOAN:A=USR(I)X:B=USR(I)Y:C=USR(I)Z:SYSHP,I+AN,A,B,C:NEXT 35112 SYSRX,1/VX,.,.,.,1/VY,.,.,.,1/VZ:SYSBB,-X/VX,-Y/VY,-Z/VZ 35120 FORI=1TOAL:A=USR(I)0+AN:B=USR(I)1+AN:SYSHL,I+AL,A,B:NEXT:AL=2*AL 35130 IFST=1THENFORI=1TOAN:SYSHL,I+AL,I,I+AN:NEXT:AL=AL+AN 35140 AN=2*AN:GOTO10000 39999 **** VERSCHIEBEN ***************** 40000 ON-(AN=.)GOTO10400:A=.:GOSUB900:PRINT"X:";:GOSUB400:PRINT"[145]"SPC(13)"Y:"; 40010 X=B:GOSUB400:Y=B:PRINT"[145]"SPC(26)"Z:";:GOSUB400 40020 A=1:GOSUB900:PRINTMO$;:SYSBB,X,Y,B:GOSUB900:GOTO10400 40999 **** VERZERREN ******************* 41000 ON-(AN=.)GOTO10400:A=.:GOSUB900:PRINT"X:";:A=1:GOSUB400 41010 PRINT"[145]"SPC(13)"Y:"; 41020 X=B:GOSUB400:Y=B:PRINT"[145]"SPC(26)"Z:";:GOSUB400:GOSUB900:PRINTMO$; 41030 SYSRX,X,.,.,.,Y,.,.,.,B:SYSBB,MX-MX*X,MY-MY*Y,.:GOSUB900:GOTO10400 41999 **** ZENTRISCHES STRECKEN ******** 42000 ON-(AN=.)GOTO10400:A=.:GOSUB900:PRINT"[218]NTR.X:";:A=MX:GOSUB400:X=B:A=MY 42010 PRINT"[145]"SPC(17)"Y:";:GOSUB400:Y=B:PRINT"[145]"SPC(28)"Z:";:A=.:GOSUB400:Z=B 42020 A=1:GOSUB900:PRINT"[211]TRECKFAKTOR :";:GOSUB400:PRINT"[145]"SPC(26)MO$"[157][157][157][157][157][157]"; 42030 SYSRX,B,.,.,.,B,.,.,.,B:SYSBB,X-B*X,Y-B*Y,Z-B*Z:PRINT" ";:GOTO10400 43999 **** FILM SZENE ****************** 44000 IFPEEK(152)<2ORAN=.GOTO10400 44010 PRINT"[147]"SPC(13)"[198]ILMSZENE"SPC(29)LEFT$(UE$,14)R$"[144] [214]ERSCHIEBEN:" 44020 PRINT" X:";:A=.:GOSUB400:VX=B:PRINTSPC(14)"[145]Y:";:GOSUB400:VY=B 44030 PRINTSPC(26)"[145]Z:";:GOSUB400:VZ=B:PRINT" [214]ERZERREN:"R$" X:";:A=1 44040 GOSUB400:X3=B:PRINTSPC(14)"[145]Y:";:GOSUB400:Y3=B:PRINTSPC(26)"[145]Z:"; 44045 GOSUB400:Z3=B:PRINTLEFT$(DO$,8)" [196]REHEN:":PRINT" ZU X - [193]CHSE: Y:"; 44050 A=MY:GOSUB400:Y1=B:PRINTSPC(26)"[145]Z:";:A=.:GOSUB400:Z1=B:C$=" [215]INKEL :" 44060 PRINTC$;:GOSUB400:W1=B/180*(null):PRINT" ZU Y - [193]CHSE: X:";:A=MX:GOSUB400 44070 X1=B:PRINTSPC(26)"[145]Z:";:A=.:GOSUB400:Z2=B:PRINTC$;:GOSUB400:W2=B/180*(null) 44080 PRINT" ZU Z - [193]CHSE: X:";:A=MX:GOSUB400:X2=B:PRINTSPC(26)"[145]Y:";:A=MY 44090 GOSUB400:Y2=B:PRINTC$;:A=.:GOSUB400:PRINT" [214]ERSCHIEBEN DER [196]REHACHSEN:" 44100 W3=B/180*(null):PRINT" X:";:A=.:GOSUB400:X=B:PRINTSPC(14)"[145]Y:";:GOSUB400:Y=B 44105 PRINTSPC(26)"[145]Z:";:GOSUB400:Z=B:A=FM/(6*AL+1) 44110 PRINT" [193]NZAHL DER [211]CHRITTE :";:GOSUB400:AE=B:P=AN:IFB=.GOTO10000 44115 PRINT" [198]LUCHTPUNKT ?";:GOSUB600:POKEEL,2-ST:D=DR+10:IFST=2GOTO44120 44116 IFST=1THENPRINT" [200]IDDEN LINE ?";:GOSUB600:IFST=2GOTO44120 44118 D=DD+10:PRINT" [197]CKPUNKTE :";:A=AN:GOSUB400:P=B:SYSBB,-MX,-MY,. 44119 SYSRX,COS(DQ),.,-SIN(DQ),.,1,.,SIN(DQ),.,COS(DQ):SYSBB,MX,MY,. 44120 A=COS(W1):W1=SIN(W1):B=COS(W2):W2=SIN(W2):C=COS(W3):W3=SIN(W3):SYSSZ 44122 VX=X3*(VX-MX)+MX:VY=Y3*(VY-MY)+MY:VZ=VZ*Z3 44124 M1=X3*B*C:M2=Y3*C*W1*W2+Y3*A*W3:M3=Z3*W1*W3-Z3*A*C*W2 44126 M4=-X3*B*W3:M5=Y3*A*C-Y3*W1*W2*W3:M6=Z3*A*W2*W3+Z3*W1*C 44128 M7=X3*W2:M8=-Y3*B*W1:M9=A*B*Z3 44130 POKEO,224:FORI=1TOAE:SYSHI,HF,ZF:PRINT#2,CHR$(255); 44135 POKEFV+1,(FM-1)/256:POKEFV,FM-1AND255:SYSSA,P,AL:SYSD:SYSSA,AN,AL 44137 FM=PEEK(FV)+256*PEEK(FV+1):FM=FM+2^15*(FM>=2^15):X1=X1+X:Y1=Y1+Y:Z1=Z1+Z 44140 X2=X2+X:Y2=Y2+Y:Z2=Z2+Z:Q=(VX-X1)*B-W2*(W1*(Y1-VY)+A*(VZ-Z1)+Z1-Z2)+X1-X2 44150 SYSRX,M1,M2,M3,M4,M5,M6,M7,M8,M9 44155 L=A*(VY-Y1)+W1*(VZ-Z1)+Y1-Y2:W=Q*C+L*W3+X2 44160 SYSBB,W,C*L-Q*W3+Y2,B*(W1*(Y1-VY)+A*(VZ-Z1)+Z1-Z2)+(VX-X1)*W2+Z2:NEXT 44180 GOSUB550:PRINT"[147]":IFFM<.THENPRINT" [198]ILM ZU LANG!" 44190 PRINTSPC(2)FM"[198]ILMBYTES NOCH FREI.":GOSUB700:GOTO10000 44999 **** OVAL / VIELECK ************** 45000 ON-(AL<.)GOTO10400:PRINT"[147]"SPC(9)"[207]VAL / [214]IELECK"SPC(24)LEFT$(UE$,19) 45010 A=24:PRINT"[144] [215]IEVIELE [197]CKEN ?";:GOSUB400:IFAN+B>MPORAL+B>MLGOTO10000 45020 AE=B:B$=" - [205]ITTE :":PRINT" X"B$;:A=MX:GOSUB400:VX=B:PRINT" Y"B$; 45030 A=MY:GOSUB400:VY=B:PRINT" Z"B$;:A=.:GOSUB400:VZ=B:W=2*(null)/AE 45040 PRINT" [194]ITTE ZWEI [214]EKTOREN FUER DIE"SPC(12)"[210]ADIEN EINGEBEN!":A=. 45050 PRINT" X1 :";:A=.:GOSUB400:X=B:PRINTTAB(14)"[145]Y1 :";:GOSUB400:Y=B:P=. 45060 PRINTTAB(26)"[145]Z1 :";:GOSUB400:Z=B:PRINT" X2 :";:A=Y:GOSUB400:X1=B:A=X 45080 PRINTTAB(14)"[145]Y2 :";:GOSUB400:Y1=B:PRINTTAB(26)"[145]Z2 :";:A=.:GOSUB400:Z1=B 45110 PRINTSPC(103)BW$:FORI=.TO2*(null)-.0001STEPW:A=COS(I):B=SIN(I):P=P+1:PRINT"[145]"P 45120 SYSHP,P+AN,VX+A*X+B*X1,VY+A*Y+B*Y1,VZ+A*Z+B*Z1:SYSHL,AL+P,AN+P,AN+P+1 45125 NEXT:SYSHL,AL+AE,AN+AE,AN+1:AN=AN+AE:AL=AL+AE:GOTO10000 45999 **** ZIRKEL ********************** 46000 ON-(AN=.)GOTO10400:PRINT"[147]"SPC(16)"[218]IRKEL"SPC(32)LEFT$(UE$,11)R$"[144] "; 46020 PRINT"[218]U WELCHER [193]CHSE SOLL DIE [205]ITTEL- ACHSE PARALLEL SEIN ?"; 46040 GOSUB200:Z$="Y":Y$="X":A=MX:C=MY:IFST=2THENZ$="Z":C=. 46050 B$="-[203]OORDINATE DER [193]CHSE :":IFST=1THENZ$="Z":Y$="Y":A=MY:C=. 46060 PRINT" "Y$B$;:GOSUB400:Z=B:PRINT" "Z$B$;:A=C 46070 GOSUB400:Y=B:A=MP/AN:B=ML/AN:A=INT(A+(A-B)*(BAGOTO10000 46085 POKE144,2:IFB*(AL+AN)1GOTO46250 46230 K=AL:FORI=.TOAN-1:FORJ=.TOAE-2:SYSHL,K+J+1,J*AN+I+1,J*AN+I+AN+1:NEXT 46240 SYSHL,K+J+1,J*AN+I+1,I+1:K=K+AE:NEXT:AL=AL+AN*AE 46250 AN=AN*AE:GOTO10000 46999 **** FILM START/ENDE ************* 47000 A=.:GOSUB900:ONPEEK(152)-1GOTO47100:PRINT"[206]AME :";:GOSUB300:N$=N$+",P,W" 47010 OPEN2,8,3,N$:PRINT#2,L$"L";:GET#15,A$:FM=16380:CLOSE3+(A$>"0"):GOTO800 47100 GOSUB900:PRINT"[211]ICHER ?";:GOSUB600:IFST=2GOTO10300 47110 PRINT#2,CHR$(254);:CLOSE2:GOTO800 47499 **** BILD SPEICHERN ************* 47500 ONPEEK(152)OR-(AN=.)GOTO10400:A=.:GOSUB900 47510 PRINT"NOCH"FM"[198]ILMBYTES,<="AL*6+1"BENOETIGT":PRINT"[198]LUCHTPUNKT ?"; 47520 GOSUB600:POKEEL,2-ST:D=DR:IFST=2GOTO47530 47522 GOSUB900:PRINT"[200]IDDEN LINE ?";:GOSUB600:IFST=2GOTO47530 47524 D=DD:A=1:GOSUB900:PRINT"[197]CKPUNKTE :";:A=AN:GOSUB400:SYSSA,B,AL 47530 SYSSZ:SYSHI,HF,ZF:POKEO,224:PRINT#2,CHR$(255);:POKEFV+1,FM/256 47540 POKEFV,FMAND255:SYSD+10:FM=PEEK(FV)+256*PEEK(FV+1):FM=FM+2^15*(FM>2^15)-1 47550 GOTO44180 47999 **** FILM SPEICHERN ************* 48000 ON(AL<.)+1GOTO10400:A=.:GOSUB900:PRINT"[206]AME :";:GOSUB300:A=1:GOSUB900 48010 GOSUB500:PRINT"SAVING":SYSFE:I=PEEK(253)+256*PEEK(254)-19456:POKE252,76 48040 POKE253,IAND255:POKE254,I/256:OPEN1,8,1,N$:GET#15,A$:IFA$>"0"GOTO800 48050 POKE251,.:U=5:CMD1,L$"L";:SYSPS:PRINT#1:U=2:CLOSE1:GOTO800 48499 **** FILM ZEIGEN **************** 48500 ON(AL<.)+1GOTO10400:A=.:GOSUB900:PRINT"ENDLOS ?";:GOSUB600:POKEBO,RF 48510 POKEEL,2-ST:WAITJY,16:U=7:SYSMV,HF,ZF:WAITJY,16,16:SYSNM 48999 **** FILM LADEN / MERGE ********** 49000 POKE19456,254:AL=.:AN=. 49500 P=ST:ON-(AL>-1ANDST=25)GOTO10400:A=.:GOSUB900:PRINT"[206]AME :";:GOSUB300:A=1 49510 GOSUB900:GOSUB500:PRINT"LOADING":SYSFE:POKE251,PEEK(253):A=.:U=3 49530 POKE252,PEEK(254):OPEN1,8,.,N$:GET#15,A$:ON-(A$>"0")GOTO800:GET#1,B$,B$ 49540 POKE781,1:SYS65478:SYSFG:SYS65484:GOSUB900:AL=-1:IFPEEK(252)>139GOTO49560 49550 SYSFE:PRINT35840-PEEK(253)-256*PEEK(254)"[194]YTES FREI.":GOTO800 49560 PRINT"[198]ILM ZU LANG !":CLOSE1:POKEPEEK(253)+256*PEEK(254),254:AL=P=25 49570 GOTO800 49999 **** SPEICHERN ******************* 50000 ON-(AN=.)GOTO10400:A=.:GOSUB900:PRINT"[206]AME :";:GOSUB300:GOSUB500:A=1 50020 GOSUB900:PRINT"SAVING":OPEN1,8,1,N$+",S,W":GET#15,A$:IFA$>"0"GOTO800 50040 U=5:CMD1,CHR$(ANAND255)CHR$(AN/256)CHR$(ALAND255)CHR$(AL/256); 50050 SYSBS:PRINT#1:U=2:CLOSE1:GOTO800 50999 **** LADEN / MERGE ************** 51000 AL=.:AN=. 52000 AL=AL-(AL=-1):A=.:GOSUB900:PRINT"[206]AME :";:GOSUB300:GOSUB500:A=1:GOSUB900 52010 PRINT"LOADING":OPEN1,8,2,N$+",S,R":GET#15,A$:IFA$>"0"GOTO800 52030 GET#1,A$,B$,C$,D$:A=ASC(A$+L$)+256*ASC(B$+L$):B=ASC(C$+L$)+256*ASC(D$+L$) 52040 ON-(AN+A>MPORAL+B>ML)GOTO52110:U=3:POKEAG,4:FORI=.TO2:C=20485+4352*I+5*AN 52050 POKE252,C/256:POKE251,C-INT(C/256)*256:POKE254,A/256:POKE253,AAND255 52060 SYSPG:NEXT:C=33538+AL*2:POKE253,BAND255:POKEAG,1:POKE252,C/256 52070 POKE251,C-INT(C/256)*256:POKE254,B/256:SYSPG:POKE254,B/256:C=35586+AL*2 52080 POKE252,C/256:A$="":POKE251,C-INT(C/256)*256:POKE253,BAND255:SYSPG:CLOSE1 52090 IFALTHENFORI=AL+1TOAL+B:C=USR(I)0+AN:D=USR(I)1+AN:SYSHL,I,C,D:NEXT 52100 AL=AL+B:AN=AN+A:GOTO800 52110 CLOSE1:PRINT"[145]ZU VIEL!":GOTO10400 53999 **** DIRECTORY ******************* 54000 GOSUB500::OPEN1,8,.,"$":GET#15,A$:ON-(A$>"0")GOTO800:PRINT"[147]" 54010 PRINTTAB(6);:FORI=.TO7:GET#1,A$,B$,C$,D$:PRINTA$B$C$D$;:NEXT:PRINT"":F=6 54020 F=6-F:POKE646,F:GET#1,A$,A$,A$,B$:PRINTASC(A$+L$)+256*ASC(B$+L$); 54030 FORI=.TO3:GET#1,A$,B$,C$,D$,E$,F$,G$:PRINTA$B$C$D$E$F$G$;:NEXT 54040 WAITJY,16:PRINT:ON-(ST=.)GOTO54020:CLOSE1:GOSUB700:GOTO10000 54999 **** DISK-KOMMANDO *************** 55000 A=.:GOSUB900:PRINT"?";:GOSUB300:GOSUB500:PRINT#15,N$:GET#15,A$:GOTO800 55999 **** HIRES SPEICHERN ************* 56000 A=.:GOSUB900:PRINT"[206]AME :";:GOSUB300:A=1:GOSUB900:SYSSW,15,.:GOSUB550 56010 OPEN1,8,1,N$+",P,W":GET#15,A$:IFA$>"0"GOTO800 56020 POKE251,.:POKE252,160:PRINT#1,CHR$(0)CHR$(32);:PRINT"SAVING":SYSCS 56030 CLOSE1:SYSSW,15,.:GOSUB550:GOTO800 63999 * (W) 1986 BY FRIDTJOF SIEBERT *